 /**
 * v-hasPermi 操作权限处理
 * Copyright (c) 2019 ruoyi
 */
 
import store from '@/store'

export default {
  inserted(el, binding, vnode) {
    const { value } = binding
    const all_permission = "ALL";  //全部权限
    // const permissions = store.state.userInfo.jurisdiction.split(',')
    const permissions = store.state.jurisdiction.split(',')

    if (value && value instanceof Array && value.length > 0) {
      const permissionFlag = value

      const hasPermissions = permissions.some(permission => {
        // 如果 登录时获取到的权限是 ['ALL'] -> 直接返回true
        // 否则 在自定义组件中传过来的值中（数组），看是否包含当前元素 包含->返回true 不包含->返回false
        return all_permission === permission || permissionFlag.includes(permission)
      })

      if (!hasPermissions) { //如果hasPermissions为false（说明登录返回的权限，不包含当前元素）
        el.parentNode && el.parentNode.removeChild(el)   //移除此元素节点
      }
    } else {
      throw new Error(`请设置操作权限标签值`)
    }
  }
}
  

import Vue from 'vue'
import router from '@/router'
Vue.directive('permission', {
  inserted (el, binding) {
    // console.log(el)
    // console.log(binding)
    const action = binding.value.action
    const effect = binding.value.effect
    // 判断 当前的路由所对应的组件中 如何判断用户是否具备action的权限
    // console.log(router.currentRoute.meta, '按钮权限')
    if (router.currentRoute.meta.indexOf(action) === -1) { // 等于-1说明没找到 不具备权限
      if (effect === 'disabled') {
        el.disabled = true
        el.classList.add('is-disabled')
      } else {
        el.parentNode.removeChild(el)
      }
    }
  }
})
